package com.gitee.sparta.annotation;

import java.lang.annotation.*;

/**
 * <p>
 *      广播监听器标识注解
 *      当用户调用 {@see SpartaTemplate#writeBroadcast(String, String, Object, long)}
 *      方法进行设置广播消息时，则 sparta 回调的目标方法是标注了该注解的方法
 * </p>
 *
 * @author zyred
 * @since v 0.0.2
 */
@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface BroadcastListener {

    /**
     * 定义广播回调的通道
     * 当用户调用 {@see SpartaTemplate#writeBroadcast(String, String, Object, long)} 设置为广播消息时
     * 方法形参中会标注消息被消费的 channel，系统初始化阶段会扫描所有的本注解，将其加载到系统中，回调的时候
     * 根据参数中设置的 channel 进行匹配，从而进行回调
     *
     * @return      [channel1, channel2, ...]
     */
    String[] channels();

}
